# 第02章 Maven基本用法
# 2.1 Maven安装
# 2.1.1 Maven软件的下载
为了使用Maven管理工具,我们首先要到官网去下载它的安装软件。通过百度搜索“Maven“如下:
点击Download链接,就可以直接进入到Maven软件的下载页面:
目前最新版是apache-maven-3.6.1版本,本文使用的是apache-maven-3.5.2版本。
Apache-maven-3.x下载地址:http://archive.apache.org/dist/maven/maven-3/
下载后的版本如下:
# 2.1.2 Maven软件的安装
Maven下载后,将Maven解压到一个没有中文没有空格的路径下,比如D:\software\maven下面。
解压后目录结构如下:
- bin:存放了maven的命令,比如mvn tomcat:run;
- boot:存放了一些maven本身的引导程序,如类加载器等;
- conf:存放了maven的一些配置文件,如setting.xml文件;
- lib:存放了maven本身运行所需的一些jar包;
至此我们的maven软件就可以使用了,前提是你的电脑上之前已经安装并配置好了JDK。
# 2.1.3 JDK的准备及统一
JDK使用JDK8版本
# 2.1.4 Maven及JDK配置
配置 MAVEN_HOME ,变量值就是你的maven安装 的路径(bin目录之前一级目录)
上面配置了我们的Maven软件,注意这个目录就是之前你解压maven的压缩文件包在的的目录,最好不要有中文和空格。
再次检查JDK的安装目录,如下图:
# 2.1.5 Maven软件版本测试
通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.5.2及java版本为1.8即为安装成功。
找开cmd命令,输入mvn –v命令,如下图:
# 2.2 Maven仓库
# 2.2.1 Maven仓库的分类
maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下图描述了maven中仓库的类型:
- 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找;默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录;而Linux上的本地仓库地址为home/Dong/.m2/repository/
远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内;
中央仓库 :在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
私服:私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程仓库,供局域网使用;
私服的好处:
- 节省资金的外网带宽,利用私服代理外部仓库之后,对外的重复构件下载便得以下手,降低外网带宽压力;
- 加速Maven构建。不停地连接请求外部仓库是什么耗时的,但是maven的一些内部机制(如快照更新检查)要求Maven在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外部远程仓库的时候,构建速度会降低。使用私服解决这问题,因为Maven只需要检查局域网内私服的数据时,构建速度便提高;
- 部署第三方构件,当某个构件无法从任何一个远程仓库获取怎么办?比如Oracle的JDBC驱动由于版权原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内部Maven项目使用;
- 提高稳定性,增强控制。对于远程仓库当外网不可用时,maven构建有可能因为依赖没有下载而不可行,私服后,即使没有网,如果该构件只有之前被其它人下载过就会存在私服上,此时我下时就可以不用连接外网直接就可以从私服上下载到。同时私服软件(nexus)还提供了额外的管理功能;
- 降低中央仓库的负荷
# 2.2.2 Maven本地仓库的配置
将repository.rar(打包好的仓库)解压到电脑上,如D:\repository目录下:
在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置(maven的安装目录下):
打开settings.xml文件,配置如下:
# 2.2.3 全局setting与用户setting
maven仓库地址、私服等配置信息需要在setting.xml文件中配置,分为全局配置和用户配置;
在maven安装目录下的有 conf/setting.xml文件,此setting.xml文件用于maven的所有project项目,它作为maven的全局配置;
如需要个性配置则需要在用户配置中设置,用户配置的setting.xml文件默认的位置在:${user.dir} /.m2/settings.xml目录中,${user.dir} 指windows 中的用户目录。
maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
# 2.3 Maven工程的认识
# 2.3.1 Maven工程的目录结构
作为一个maven工程,它的src目录和pom.xml是必备的。
进入src目录后,我们发现它里面的目录结构如下:
- src/main/java —— 存放项目的.java文件
- src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
- src/test/java —— 存放所有单元测试.java文件,如JUnit测试类
- src/test/resources —— 测试资源文件
- target —— 项目输出位置,编译后的class文件会输出到此目录
- pom.xml——maven项目核心配置文件
注意:如果是普通的java项目,那么就没有webapp目录。
# 2.3.2 Maven工程的运行
进入maven工程目录(当前目录有pom.xml文件),运行tomcat:run命令。
根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/
# 2.3.3 问题处理
如果本地仓库配置错误会报下边的错误
分析:
maven工程运行先从本地仓库找jar包,本地仓库没有再从中央仓库找,上边提示downloading… 表示 从中央仓库下载jar,由于本地没有联网,报错。
解决:
在maven安装目录的conf/setting.xml文件中配置本地仓库。